package com.linktel.productionLine.dao;

import com.linktel.productionLine.entity.WorksheetPreserve;
import com.linktel.productionLine.entity.dto.workSheetPreserve.WorkSheetPreserveDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author Linktel
 * @description 针对表【worksheet_preserve(工单维护功能)】的数据库操作Mapper
 * @createDate 2023-09-27 08:50:37
 * @Entity generator.entity.WorksheetPreserve
 */
public interface WorksheetPreserveDao {

    /**
     * 查询工单维护信息列表
     *
     * @return 工单维护信息列表
     */
    List<WorkSheetPreserveDTO> listWorkSheetPreserve();

    /**
     * 新增工单维护信息
     *
     * @param workSheetId      工单id
     * @param wsSerialNumber   工单号
     * @param basePedigreeId   产品id
     * @param productCode      产品代码
     * @param basePedigreeName 产品名称
     * @param hidden           是否隐藏
     * @param currentUserId    当前登录用户id
     * @return 是否新增成功
     */
    Boolean addWorkSheetPreserve(@Param("workSheetId") Long workSheetId,
                                 @Param("wsSerialNumber") String wsSerialNumber,
                                 @Param("productId") Long basePedigreeId,
                                 @Param("productCode") String productCode,
                                 @Param("productName") String basePedigreeName,
                                 @Param("hidden") Integer hidden,
                                 @Param("currentUserId") Long currentUserId);

    /**
     * 根据工单号查询工单id
     *
     * @param wsSerialNumber 工单号
     * @return id列表
     */
    List<Long> getByWsSerialNumberAndProductCode(@Param("wsSerialNumber") String wsSerialNumber, @Param("productCode") String productCode);

    /**
     * 删除工单维护信息
     *
     * @param currentUserId 当前登录用户id
     * @param id            主键id
     * @return 是否删除成功
     */
    Boolean deleteWorkSheetPreserve(@Param("currentUserId") Long currentUserId, @Param("id") Long id);

    /**
     * 修改工单维护信息
     *
     * @param id               主键id
     * @param workSheetId      工单id
     * @param wsSerialNumber   工单号
     * @param basePedigreeId   产品id
     * @param productCode      产品代码
     * @param basePedigreeName 产品名称
     * @param hidden           是否隐藏
     * @param currentUserId    当前登录用户id
     * @return 是否修改成功
     */
    Boolean editWorkSheetPreserve(@Param("id") Long id,
                                  @Param("workSheetId") Long workSheetId,
                                  @Param("wsSerialNumber") String wsSerialNumber,
                                  @Param("productId") Long basePedigreeId,
                                  @Param("productCode") String productCode,
                                  @Param("productName") String basePedigreeName,
                                  @Param("hidden") Integer hidden,
                                  @Param("currentUserId") Long currentUserId);
}
